/*
 * Copyright (c) 2021
 * Gustavo Valiente gustavo.valiente@protonmail.com
 * Licensed under the Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license
 */

#ifndef FR_MODEL_3D_ITEMS_GBA_H
#define FR_MODEL_3D_ITEMS_GBA_H

#include "fr_model_3d_item.h"

namespace fr::model_3d_items
{
    constexpr inline vertex_3d gba_vertices[] = {
        vertex_3d(42.0, 2.0, -17.5),
        vertex_3d(21.5, 2.0, -25.5),
        vertex_3d(-21.5, 2.0, -25.5),
        vertex_3d(-42.0, 2.0, -17.5),
        vertex_3d(44.5, 2.0, 12.0),
        vertex_3d(40.0, 2.0, 18.0),
        vertex_3d(23.5, 2.0, 23.5),
        vertex_3d(0.0, 2.0, 25.5),
        vertex_3d(-23.5, 2.0, 23.5),
        vertex_3d(-40.0, 2.0, 18.0),
        vertex_3d(-44.5, 2.0, 12.0),
        vertex_3d(-35.0, 3.0, -10.0),
        vertex_3d(-31.0, 3.0, -10.0),
        vertex_3d(-31.0, 3.0, -6.0),
        vertex_3d(-27.0, 3.0, -6.0),
        vertex_3d(-27.0, 3.0, -2.0),
        vertex_3d(-31.0, 3.0, -2.0),
        vertex_3d(-31.0, 3.0, 2.0),
        vertex_3d(-35.0, 3.0, 2.0),
        vertex_3d(-35.0, 3.0, -2.0),
        vertex_3d(-39.0, 3.0, -2.0),
        vertex_3d(-39.0, 3.0, -6.0),
        vertex_3d(-35.0, 3.0, -6.0),
        vertex_3d(-26.0, 3.0, 7.0),
        vertex_3d(-26.0, 3.0, 9.5),
        vertex_3d(-28.5, 3.0, 9.5),
        vertex_3d(-28.5, 3.0, 7.0),
        vertex_3d(-26.0, 3.0, 14.0),
        vertex_3d(-26.0, 3.0, 11.5),
        vertex_3d(-28.5, 3.0, 11.5),
        vertex_3d(-28.5, 3.0, 14.0),
        vertex_3d(26.0, 3.0, -5.0),
        vertex_3d(31.0, 3.0, -5.0),
        vertex_3d(31.0, 3.0, 0.0),
        vertex_3d(26.0, 3.0, 0.0),
        vertex_3d(34.5, 3.0, -8.0),
        vertex_3d(39.5, 3.0, -8.0),
        vertex_3d(39.5, 3.0, -3.0),
        vertex_3d(34.5, 3.0, -3.0),
        vertex_3d(22.0, 3.0, -18.0),
        vertex_3d(24.0, 3.0, 16.0),
        vertex_3d(0.0, 3.0, 20.0),
        vertex_3d(-24.0, 3.0, 16.0),
        vertex_3d(-22.0, 3.0, -18.0),
        vertex_3d(0.0, 3.0, -20.0),
        vertex_3d(-20.0, 3.0, -15.5),
        vertex_3d(20.0, 3.0, -15.5),
        vertex_3d(20.0, 3.0, 10.5),
        vertex_3d(-20.0, 3.0, 10.5),
        vertex_3d(-39.5, 1.5, -21.5),
        vertex_3d(39.5, 1.5, -21.5),
        vertex_3d(-22.0, 3.0, -18.0),
        vertex_3d(-23.0, 3.0, 0.0),
        vertex_3d(41.5, -2.0, -17.5),
        vertex_3d(21.5, -2.0, -25.5),
        vertex_3d(-21.5, -2.0, -25.5),
        vertex_3d(-41.5, -2.0, -17.5),
        vertex_3d(44.5, -2.0, 12.0),
        vertex_3d(40.0, -2.0, 18.0),
        vertex_3d(23.5, -2.0, 23.5),
        vertex_3d(0.0, -2.0, 25.5),
        vertex_3d(-23.5, -2.0, 23.5),
        vertex_3d(-40.0, -2.0, 18.0),
        vertex_3d(-44.5, -2.0, 12.0),
        vertex_3d(-39.5, -1.5, -21.5),
        vertex_3d(39.5, -1.5, -21.5),
    };

    constexpr inline bn::color gba_colors[] = {
        bn::color(13, 11, 20), bn::color(6, 6, 6), bn::color(10, 10, 10), bn::color(24, 24, 24),
        bn::color(31, 31, 0),
    };

    constexpr inline int gba_screen_interior_color = 2;
    constexpr inline int gba_screen_interior_shading = 7;

    constexpr inline int gba_screen_exterior_color = 1;
    constexpr inline int gba_screen_exterior_shading = 7;

    constexpr inline int gba_pad_color = 3;
    constexpr inline int gba_pad_shading = 7;

    constexpr inline int gba_pad_left_right_color = 3;
    constexpr inline int gba_pad_left_right_shading = 7;

    constexpr inline int gba_start_color = 3;
    constexpr inline int gba_start_shading = 7;

    constexpr inline int gba_select_color = 3;
    constexpr inline int gba_select_shading = 7;

    constexpr inline int gba_b_color = 3;
    constexpr inline int gba_b_shading = 7;

    constexpr inline int gba_a_color = 3;
    constexpr inline int gba_a_shading = 7;

    constexpr inline int gba_l_front_color = 3;
    constexpr inline int gba_l_front_shading = 7;

    constexpr inline int gba_l_side_color = 3;
    constexpr inline int gba_l_side_shading = 3;

    constexpr inline int gba_l_back_color = 3;
    constexpr inline int gba_l_back_shading = 0;

    constexpr inline int gba_r_front_color = 3;
    constexpr inline int gba_r_front_shading = 7;

    constexpr inline int gba_r_side_color = 3;
    constexpr inline int gba_r_side_shading = 3;

    constexpr inline int gba_r_back_color = 3;
    constexpr inline int gba_r_back_shading = 0;

    constexpr inline int gba_shell_frontal_color = 0;
    constexpr inline int gba_shell_frontal_shading = 7;

    constexpr inline int gba_shell_side_color = 0;
    constexpr inline int gba_shell_side_shading = 3;

    constexpr inline int gba_shell_back_color = 0;
    constexpr inline int gba_shell_back_shading = 0;

    constexpr inline face_3d gba_faces_full[] = {
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 45, 48, 47, gba_screen_interior_color, gba_screen_interior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 44, 43, 45, 46, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 39, 44, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 40, 39, 46, 47, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 41, 40, 47, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 47, 48, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 48, 45, 51, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 18, 17, 12, gba_pad_color, gba_pad_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 20, 19, 22, 21, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 14, 13, 16, 15, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 24, 23, 26, 25, gba_start_color, gba_start_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 28, 29, 30, 27, gba_select_color, gba_select_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 31, 34, 33, gba_b_color, gba_b_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 36, 35, 38, 37, gba_a_color, gba_a_shading),
        face_3d(gba_vertices, vertex_3d(-0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 2, 49, 3, gba_l_front_color, gba_l_front_shading),
        face_3d(gba_vertices, vertex_3d(-0.21693045781865616, 0.0, -0.9761870601839528), 49, 2, 55, 64, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.847998304005088, 0.0, -0.52999894000318), 3, 49, 64, 56, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.06163335513613657, -0.9861336821781851, -0.15408338784034142), 55, 56, 64, gba_l_back_color, gba_l_back_shading),
        face_3d(gba_vertices, vertex_3d(0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 0, 50, 1, gba_r_front_color, gba_r_front_shading),
        face_3d(gba_vertices, vertex_3d(0.21693045781865616, 0.0, -0.9761870601839528), 1, 50, 65, 54, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8491170849621695, -0.10613963562027119, -0.517430723648822), 50, 0, 53, 65, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.06163335513613657, -0.9861336821781851, -0.15408338784034142), 53, 54, 65, gba_r_back_color, gba_r_back_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 21, 22, 11, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.28951149865241277, 0.9568600379189914, -0.024534872767153625), 4, 0, 36, 37, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.17888543819998318, 0.9838699100999074, 0.0), 10, 20, 21, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 40, 34, 31, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.031286826158499266, 0.9962898704847111, -0.08017249203115437), 0, 1, 35, 36, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.06135719910778964, 0.9970544855015816, 0.04601789933084223), 5, 4, 37, 38, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.033289694897414374, 0.9986908469224313, 0.03883797738031677), 5, 38, 33, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 33, 34, 40, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 33, 38, 35, 32, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 35, 39, 31, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.11088674112078543, 0.9841198274469707, -0.13860842640098178), 35, 1, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.01131030460950559, 0.9910654414079274, 0.1328960791616907), 7, 6, 40, 41, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.015222528583097455, 0.983755909682673, 0.1788647108513951), 8, 7, 41, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9838699100999074, -0.17888543819998318), 1, 2, 44, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.05285474219019789, 0.9893747053727666, -0.13544027686238208), 2, 3, 43, 44, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 25, 29, 28, 24, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.994505452921406, 0.10468478451804274), 27, 30, 8, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.07985870414072527, 0.9860813902593902, 0.145828937996107), 8, 30, 10, 9, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9974586998307351, 0.07124704998790965), 19, 20, 10, 18, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.04432683337828952, 0.9973537510115142, 0.057624883391776384), 18, 10, 26, 17, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.06237828615518054, 0.9980525784828886, 0.0), 10, 30, 26, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 12, 51, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 12, 13, 14, 51, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 52, 51, 14, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 42, 52, 23, 27, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 16, 17, 26, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 26, 23, 52, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.0, -1.0), 2, 1, 54, 55, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.9964283048969312, 0.0, -0.08444307668618062), 0, 4, 57, 53, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8, -0.0, 0.6), 4, 5, 58, 57, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.31622776601683794, -0.0, 0.9486832980505138), 5, 6, 59, 58, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0847998304005088, -0.0, 0.9963980072059784), 6, 7, 60, 59, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.0847998304005088, 0.0, 0.9963980072059784), 7, 8, 61, 60, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.31622776601683794, 0.0, 0.9486832980505138), 9, 62, 61, 8, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.8, 0.0, 0.6), 10, 63, 62, 9, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.988788000202999, -0.12359850002537487, -0.08379559323754228), 10, 3, 56, 63, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0, -1.0, 0.0), 57, 58, 54, 53, gba_shell_back_color, gba_shell_back_shading),
        face_3d(gba_vertices, vertex_3d(0.0, -1.0, -0.0), 56, 55, 62, 63, gba_shell_back_color, gba_shell_back_shading),
        face_3d(gba_vertices, vertex_3d(0.0, -1.0, 0.0), 55, 54, 61, 62, gba_shell_back_color, gba_shell_back_shading),
        face_3d(gba_vertices, vertex_3d(0.0, -1.0, 0.0), 60, 61, 54, 59, gba_shell_back_color, gba_shell_back_shading),
        face_3d(gba_vertices, vertex_3d(0.0, -1.0, 0.0), 58, 59, 54, gba_shell_back_color, gba_shell_back_shading),
    };

    constexpr inline model_3d_item gba_full(gba_vertices, gba_faces_full);

    constexpr inline face_3d gba_faces[] = {
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 45, 48, 47, gba_screen_interior_color, gba_screen_interior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 44, 43, 45, 46, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 39, 44, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 40, 39, 46, 47, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 41, 40, 47, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 47, 48, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 48, 45, 51, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 18, 17, 12, gba_pad_color, gba_pad_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 20, 19, 22, 21, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 14, 13, 16, 15, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 24, 23, 26, 25, gba_start_color, gba_start_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 28, 29, 30, 27, gba_select_color, gba_select_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 31, 34, 33, gba_b_color, gba_b_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 36, 35, 38, 37, gba_a_color, gba_a_shading),
        face_3d(gba_vertices, vertex_3d(-0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 2, 49, 3, gba_l_front_color, gba_l_front_shading),
        face_3d(gba_vertices, vertex_3d(-0.21693045781865616, 0.0, -0.9761870601839528), 49, 2, 55, 64, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.847998304005088, 0.0, -0.52999894000318), 3, 49, 64, 56, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 0, 50, 1, gba_r_front_color, gba_r_front_shading),
        face_3d(gba_vertices, vertex_3d(0.21693045781865616, 0.0, -0.9761870601839528), 1, 50, 65, 54, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8491170849621695, -0.10613963562027119, -0.517430723648822), 50, 0, 53, 65, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 21, 22, 11, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.28951149865241277, 0.9568600379189914, -0.024534872767153625), 4, 0, 36, 37, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.17888543819998318, 0.9838699100999074, 0.0), 10, 20, 21, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 40, 34, 31, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.031286826158499266, 0.9962898704847111, -0.08017249203115437), 0, 1, 35, 36, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.06135719910778964, 0.9970544855015816, 0.04601789933084223), 5, 4, 37, 38, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.033289694897414374, 0.9986908469224313, 0.03883797738031677), 5, 38, 33, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 33, 34, 40, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 33, 38, 35, 32, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 35, 39, 31, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.11088674112078543, 0.9841198274469707, -0.13860842640098178), 35, 1, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.01131030460950559, 0.9910654414079274, 0.1328960791616907), 7, 6, 40, 41, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.015222528583097455, 0.983755909682673, 0.1788647108513951), 8, 7, 41, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9838699100999074, -0.17888543819998318), 1, 2, 44, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.05285474219019789, 0.9893747053727666, -0.13544027686238208), 2, 3, 43, 44, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 25, 29, 28, 24, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.994505452921406, 0.10468478451804274), 27, 30, 8, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.07985870414072527, 0.9860813902593902, 0.145828937996107), 8, 30, 10, 9, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9974586998307351, 0.07124704998790965), 19, 20, 10, 18, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.04432683337828952, 0.9973537510115142, 0.057624883391776384), 18, 10, 26, 17, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.06237828615518054, 0.9980525784828886, 0.0), 10, 30, 26, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 12, 51, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 12, 13, 14, 51, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 52, 51, 14, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 42, 52, 23, 27, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 16, 17, 26, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 26, 23, 52, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.0, -1.0), 2, 1, 54, 55, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.9964283048969312, 0.0, -0.08444307668618062), 0, 4, 57, 53, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8, -0.0, 0.6), 4, 5, 58, 57, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.31622776601683794, -0.0, 0.9486832980505138), 5, 6, 59, 58, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0847998304005088, -0.0, 0.9963980072059784), 6, 7, 60, 59, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.0847998304005088, 0.0, 0.9963980072059784), 7, 8, 61, 60, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.31622776601683794, 0.0, 0.9486832980505138), 9, 62, 61, 8, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.8, 0.0, 0.6), 10, 63, 62, 9, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.988788000202999, -0.12359850002537487, -0.08379559323754228), 10, 3, 56, 63, gba_shell_side_color, gba_shell_side_shading),
    };

    constexpr inline model_3d_item gba(gba_vertices, gba_faces);

    constexpr inline int gba_pad_keypad_held_color = 4;

    constexpr inline face_3d gba_left_right_held_faces[] = {
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 45, 48, 47, gba_screen_interior_color, gba_screen_interior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 44, 43, 45, 46, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 39, 44, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 40, 39, 46, 47, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 41, 40, 47, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 47, 48, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 48, 45, 51, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 18, 17, 12, gba_pad_color, gba_pad_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 20, 19, 22, 21, gba_pad_keypad_held_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 14, 13, 16, 15, gba_pad_keypad_held_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 24, 23, 26, 25, gba_start_color, gba_start_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 28, 29, 30, 27, gba_select_color, gba_select_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 31, 34, 33, gba_b_color, gba_b_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 36, 35, 38, 37, gba_a_color, gba_a_shading),
        face_3d(gba_vertices, vertex_3d(-0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 2, 49, 3, gba_l_front_color, gba_l_front_shading),
        face_3d(gba_vertices, vertex_3d(-0.21693045781865616, 0.0, -0.9761870601839528), 49, 2, 55, 64, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.847998304005088, 0.0, -0.52999894000318), 3, 49, 64, 56, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 0, 50, 1, gba_r_front_color, gba_r_front_shading),
        face_3d(gba_vertices, vertex_3d(0.21693045781865616, 0.0, -0.9761870601839528), 1, 50, 65, 54, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8491170849621695, -0.10613963562027119, -0.517430723648822), 50, 0, 53, 65, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 21, 22, 11, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.28951149865241277, 0.9568600379189914, -0.024534872767153625), 4, 0, 36, 37, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.17888543819998318, 0.9838699100999074, 0.0), 10, 20, 21, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 40, 34, 31, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.031286826158499266, 0.9962898704847111, -0.08017249203115437), 0, 1, 35, 36, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.06135719910778964, 0.9970544855015816, 0.04601789933084223), 5, 4, 37, 38, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.033289694897414374, 0.9986908469224313, 0.03883797738031677), 5, 38, 33, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 33, 34, 40, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 33, 38, 35, 32, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 35, 39, 31, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.11088674112078543, 0.9841198274469707, -0.13860842640098178), 35, 1, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.01131030460950559, 0.9910654414079274, 0.1328960791616907), 7, 6, 40, 41, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.015222528583097455, 0.983755909682673, 0.1788647108513951), 8, 7, 41, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9838699100999074, -0.17888543819998318), 1, 2, 44, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.05285474219019789, 0.9893747053727666, -0.13544027686238208), 2, 3, 43, 44, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 25, 29, 28, 24, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.994505452921406, 0.10468478451804274), 27, 30, 8, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.07985870414072527, 0.9860813902593902, 0.145828937996107), 8, 30, 10, 9, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9974586998307351, 0.07124704998790965), 19, 20, 10, 18, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.04432683337828952, 0.9973537510115142, 0.057624883391776384), 18, 10, 26, 17, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.06237828615518054, 0.9980525784828886, 0.0), 10, 30, 26, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 12, 51, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 12, 13, 14, 51, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 52, 51, 14, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 42, 52, 23, 27, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 16, 17, 26, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 26, 23, 52, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.0, -1.0), 2, 1, 54, 55, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.9964283048969312, 0.0, -0.08444307668618062), 0, 4, 57, 53, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8, -0.0, 0.6), 4, 5, 58, 57, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.31622776601683794, -0.0, 0.9486832980505138), 5, 6, 59, 58, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0847998304005088, -0.0, 0.9963980072059784), 6, 7, 60, 59, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.0847998304005088, 0.0, 0.9963980072059784), 7, 8, 61, 60, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.31622776601683794, 0.0, 0.9486832980505138), 9, 62, 61, 8, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.8, 0.0, 0.6), 10, 63, 62, 9, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.988788000202999, -0.12359850002537487, -0.08379559323754228), 10, 3, 56, 63, gba_shell_side_color, gba_shell_side_shading),
    };

    constexpr inline model_3d_item gba_left_right_held(gba_vertices, gba_left_right_held_faces);

    constexpr inline face_3d gba_a_held_faces[] = {
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 45, 48, 47, gba_screen_interior_color, gba_screen_interior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 44, 43, 45, 46, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 39, 44, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 40, 39, 46, 47, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 41, 40, 47, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 47, 48, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 48, 45, 51, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 18, 17, 12, gba_pad_color, gba_pad_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 20, 19, 22, 21, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 14, 13, 16, 15, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 24, 23, 26, 25, gba_start_color, gba_start_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 28, 29, 30, 27, gba_select_color, gba_select_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 31, 34, 33, gba_b_color, gba_b_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 36, 35, 38, 37, gba_pad_keypad_held_color, gba_a_shading),
        face_3d(gba_vertices, vertex_3d(-0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 2, 49, 3, gba_l_front_color, gba_l_front_shading),
        face_3d(gba_vertices, vertex_3d(-0.21693045781865616, 0.0, -0.9761870601839528), 49, 2, 55, 64, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.847998304005088, 0.0, -0.52999894000318), 3, 49, 64, 56, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 0, 50, 1, gba_r_front_color, gba_r_front_shading),
        face_3d(gba_vertices, vertex_3d(0.21693045781865616, 0.0, -0.9761870601839528), 1, 50, 65, 54, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8491170849621695, -0.10613963562027119, -0.517430723648822), 50, 0, 53, 65, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 21, 22, 11, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.28951149865241277, 0.9568600379189914, -0.024534872767153625), 4, 0, 36, 37, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.17888543819998318, 0.9838699100999074, 0.0), 10, 20, 21, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 40, 34, 31, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.031286826158499266, 0.9962898704847111, -0.08017249203115437), 0, 1, 35, 36, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.06135719910778964, 0.9970544855015816, 0.04601789933084223), 5, 4, 37, 38, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.033289694897414374, 0.9986908469224313, 0.03883797738031677), 5, 38, 33, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 33, 34, 40, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 33, 38, 35, 32, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 35, 39, 31, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.11088674112078543, 0.9841198274469707, -0.13860842640098178), 35, 1, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.01131030460950559, 0.9910654414079274, 0.1328960791616907), 7, 6, 40, 41, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.015222528583097455, 0.983755909682673, 0.1788647108513951), 8, 7, 41, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9838699100999074, -0.17888543819998318), 1, 2, 44, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.05285474219019789, 0.9893747053727666, -0.13544027686238208), 2, 3, 43, 44, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 25, 29, 28, 24, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.994505452921406, 0.10468478451804274), 27, 30, 8, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.07985870414072527, 0.9860813902593902, 0.145828937996107), 8, 30, 10, 9, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9974586998307351, 0.07124704998790965), 19, 20, 10, 18, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.04432683337828952, 0.9973537510115142, 0.057624883391776384), 18, 10, 26, 17, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.06237828615518054, 0.9980525784828886, 0.0), 10, 30, 26, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 12, 51, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 12, 13, 14, 51, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 52, 51, 14, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 42, 52, 23, 27, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 16, 17, 26, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 26, 23, 52, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.0, -1.0), 2, 1, 54, 55, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.9964283048969312, 0.0, -0.08444307668618062), 0, 4, 57, 53, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8, -0.0, 0.6), 4, 5, 58, 57, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.31622776601683794, -0.0, 0.9486832980505138), 5, 6, 59, 58, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0847998304005088, -0.0, 0.9963980072059784), 6, 7, 60, 59, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.0847998304005088, 0.0, 0.9963980072059784), 7, 8, 61, 60, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.31622776601683794, 0.0, 0.9486832980505138), 9, 62, 61, 8, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.8, 0.0, 0.6), 10, 63, 62, 9, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.988788000202999, -0.12359850002537487, -0.08379559323754228), 10, 3, 56, 63, gba_shell_side_color, gba_shell_side_shading),
    };

    constexpr inline model_3d_item gba_a_held(gba_vertices, gba_a_held_faces);

    constexpr inline face_3d gba_b_held_faces[] = {
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 45, 48, 47, gba_screen_interior_color, gba_screen_interior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 44, 43, 45, 46, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 39, 44, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 40, 39, 46, 47, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 41, 40, 47, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 47, 48, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 48, 45, 51, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 18, 17, 12, gba_pad_color, gba_pad_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 20, 19, 22, 21, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 14, 13, 16, 15, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 24, 23, 26, 25, gba_start_color, gba_start_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 28, 29, 30, 27, gba_select_color, gba_select_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 31, 34, 33, gba_pad_keypad_held_color, gba_b_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 36, 35, 38, 37, gba_a_color, gba_a_shading),
        face_3d(gba_vertices, vertex_3d(-0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 2, 49, 3, gba_l_front_color, gba_l_front_shading),
        face_3d(gba_vertices, vertex_3d(-0.21693045781865616, 0.0, -0.9761870601839528), 49, 2, 55, 64, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.847998304005088, 0.0, -0.52999894000318), 3, 49, 64, 56, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 0, 50, 1, gba_r_front_color, gba_r_front_shading),
        face_3d(gba_vertices, vertex_3d(0.21693045781865616, 0.0, -0.9761870601839528), 1, 50, 65, 54, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8491170849621695, -0.10613963562027119, -0.517430723648822), 50, 0, 53, 65, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 21, 22, 11, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.28951149865241277, 0.9568600379189914, -0.024534872767153625), 4, 0, 36, 37, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.17888543819998318, 0.9838699100999074, 0.0), 10, 20, 21, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 40, 34, 31, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.031286826158499266, 0.9962898704847111, -0.08017249203115437), 0, 1, 35, 36, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.06135719910778964, 0.9970544855015816, 0.04601789933084223), 5, 4, 37, 38, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.033289694897414374, 0.9986908469224313, 0.03883797738031677), 5, 38, 33, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 33, 34, 40, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 33, 38, 35, 32, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 35, 39, 31, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.11088674112078543, 0.9841198274469707, -0.13860842640098178), 35, 1, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.01131030460950559, 0.9910654414079274, 0.1328960791616907), 7, 6, 40, 41, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.015222528583097455, 0.983755909682673, 0.1788647108513951), 8, 7, 41, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9838699100999074, -0.17888543819998318), 1, 2, 44, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.05285474219019789, 0.9893747053727666, -0.13544027686238208), 2, 3, 43, 44, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 25, 29, 28, 24, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.994505452921406, 0.10468478451804274), 27, 30, 8, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.07985870414072527, 0.9860813902593902, 0.145828937996107), 8, 30, 10, 9, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9974586998307351, 0.07124704998790965), 19, 20, 10, 18, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.04432683337828952, 0.9973537510115142, 0.057624883391776384), 18, 10, 26, 17, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.06237828615518054, 0.9980525784828886, 0.0), 10, 30, 26, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 12, 51, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 12, 13, 14, 51, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 52, 51, 14, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 42, 52, 23, 27, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 16, 17, 26, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 26, 23, 52, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.0, -1.0), 2, 1, 54, 55, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.9964283048969312, 0.0, -0.08444307668618062), 0, 4, 57, 53, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8, -0.0, 0.6), 4, 5, 58, 57, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.31622776601683794, -0.0, 0.9486832980505138), 5, 6, 59, 58, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0847998304005088, -0.0, 0.9963980072059784), 6, 7, 60, 59, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.0847998304005088, 0.0, 0.9963980072059784), 7, 8, 61, 60, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.31622776601683794, 0.0, 0.9486832980505138), 9, 62, 61, 8, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.8, 0.0, 0.6), 10, 63, 62, 9, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.988788000202999, -0.12359850002537487, -0.08379559323754228), 10, 3, 56, 63, gba_shell_side_color, gba_shell_side_shading),
    };

    constexpr inline model_3d_item gba_b_held(gba_vertices, gba_b_held_faces);

    constexpr inline face_3d gba_r_held_faces[] = {
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 45, 48, 47, gba_screen_interior_color, gba_screen_interior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 44, 43, 45, 46, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 39, 44, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 40, 39, 46, 47, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 41, 40, 47, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 47, 48, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 48, 45, 51, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 18, 17, 12, gba_pad_color, gba_pad_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 20, 19, 22, 21, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 14, 13, 16, 15, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 24, 23, 26, 25, gba_start_color, gba_start_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 28, 29, 30, 27, gba_select_color, gba_select_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 31, 34, 33, gba_b_color, gba_b_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 36, 35, 38, 37, gba_a_color, gba_a_shading),
        face_3d(gba_vertices, vertex_3d(-0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 2, 49, 3, gba_l_front_color, gba_l_front_shading),
        face_3d(gba_vertices, vertex_3d(-0.21693045781865616, 0.0, -0.9761870601839528), 49, 2, 55, 64, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.847998304005088, 0.0, -0.52999894000318), 3, 49, 64, 56, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 0, 50, 1, gba_pad_keypad_held_color, gba_r_front_shading),
        face_3d(gba_vertices, vertex_3d(0.21693045781865616, 0.0, -0.9761870601839528), 1, 50, 65, 54, gba_pad_keypad_held_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8491170849621695, -0.10613963562027119, -0.517430723648822), 50, 0, 53, 65, gba_pad_keypad_held_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 21, 22, 11, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.28951149865241277, 0.9568600379189914, -0.024534872767153625), 4, 0, 36, 37, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.17888543819998318, 0.9838699100999074, 0.0), 10, 20, 21, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 40, 34, 31, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.031286826158499266, 0.9962898704847111, -0.08017249203115437), 0, 1, 35, 36, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.06135719910778964, 0.9970544855015816, 0.04601789933084223), 5, 4, 37, 38, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.033289694897414374, 0.9986908469224313, 0.03883797738031677), 5, 38, 33, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 33, 34, 40, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 33, 38, 35, 32, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 35, 39, 31, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.11088674112078543, 0.9841198274469707, -0.13860842640098178), 35, 1, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.01131030460950559, 0.9910654414079274, 0.1328960791616907), 7, 6, 40, 41, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.015222528583097455, 0.983755909682673, 0.1788647108513951), 8, 7, 41, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9838699100999074, -0.17888543819998318), 1, 2, 44, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.05285474219019789, 0.9893747053727666, -0.13544027686238208), 2, 3, 43, 44, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 25, 29, 28, 24, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.994505452921406, 0.10468478451804274), 27, 30, 8, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.07985870414072527, 0.9860813902593902, 0.145828937996107), 8, 30, 10, 9, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9974586998307351, 0.07124704998790965), 19, 20, 10, 18, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.04432683337828952, 0.9973537510115142, 0.057624883391776384), 18, 10, 26, 17, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.06237828615518054, 0.9980525784828886, 0.0), 10, 30, 26, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 12, 51, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 12, 13, 14, 51, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 52, 51, 14, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 42, 52, 23, 27, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 16, 17, 26, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 26, 23, 52, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.0, -1.0), 2, 1, 54, 55, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.9964283048969312, 0.0, -0.08444307668618062), 0, 4, 57, 53, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8, -0.0, 0.6), 4, 5, 58, 57, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.31622776601683794, -0.0, 0.9486832980505138), 5, 6, 59, 58, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0847998304005088, -0.0, 0.9963980072059784), 6, 7, 60, 59, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.0847998304005088, 0.0, 0.9963980072059784), 7, 8, 61, 60, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.31622776601683794, 0.0, 0.9486832980505138), 9, 62, 61, 8, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.8, 0.0, 0.6), 10, 63, 62, 9, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.988788000202999, -0.12359850002537487, -0.08379559323754228), 10, 3, 56, 63, gba_shell_side_color, gba_shell_side_shading),
    };

    constexpr inline model_3d_item gba_r_held(gba_vertices, gba_r_held_faces);

    constexpr inline face_3d gba_start_held_faces[] = {
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 45, 48, 47, gba_screen_interior_color, gba_screen_interior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 44, 43, 45, 46, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 46, 39, 44, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 40, 39, 46, 47, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 41, 40, 47, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 47, 48, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 48, 45, 51, 42, gba_screen_exterior_color, gba_screen_exterior_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 18, 17, 12, gba_pad_color, gba_pad_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 20, 19, 22, 21, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 14, 13, 16, 15, gba_pad_left_right_color, gba_pad_left_right_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 24, 23, 26, 25, gba_pad_keypad_held_color, gba_start_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 28, 29, 30, 27, gba_select_color, gba_select_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 31, 34, 33, gba_b_color, gba_b_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 36, 35, 38, 37, gba_a_color, gba_a_shading),
        face_3d(gba_vertices, vertex_3d(-0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 2, 49, 3, gba_l_front_color, gba_l_front_shading),
        face_3d(gba_vertices, vertex_3d(-0.21693045781865616, 0.0, -0.9761870601839528), 49, 2, 55, 64, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.847998304005088, 0.0, -0.52999894000318), 3, 49, 64, 56, gba_l_side_color, gba_l_side_shading),
        face_3d(gba_vertices, vertex_3d(0.06352358102366062, 0.9846155058667397, -0.16277917637313036), 0, 50, 1, gba_r_front_color, gba_r_front_shading),
        face_3d(gba_vertices, vertex_3d(0.21693045781865616, 0.0, -0.9761870601839528), 1, 50, 65, 54, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8491170849621695, -0.10613963562027119, -0.517430723648822), 50, 0, 53, 65, gba_r_side_color, gba_r_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 21, 22, 11, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.28951149865241277, 0.9568600379189914, -0.024534872767153625), 4, 0, 36, 37, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.17888543819998318, 0.9838699100999074, 0.0), 10, 20, 21, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 40, 34, 31, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.031286826158499266, 0.9962898704847111, -0.08017249203115437), 0, 1, 35, 36, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.06135719910778964, 0.9970544855015816, 0.04601789933084223), 5, 4, 37, 38, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.033289694897414374, 0.9986908469224313, 0.03883797738031677), 5, 38, 33, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 33, 34, 40, 6, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, -0.0), 33, 38, 35, 32, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 32, 35, 39, 31, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.11088674112078543, 0.9841198274469707, -0.13860842640098178), 35, 1, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.01131030460950559, 0.9910654414079274, 0.1328960791616907), 7, 6, 40, 41, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.015222528583097455, 0.983755909682673, 0.1788647108513951), 8, 7, 41, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9838699100999074, -0.17888543819998318), 1, 2, 44, 39, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.05285474219019789, 0.9893747053727666, -0.13544027686238208), 2, 3, 43, 44, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 25, 29, 28, 24, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.994505452921406, 0.10468478451804274), 27, 30, 8, 42, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.07985870414072527, 0.9860813902593902, 0.145828937996107), 8, 30, 10, 9, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.9974586998307351, 0.07124704998790965), 19, 20, 10, 18, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.04432683337828952, 0.9973537510115142, 0.057624883391776384), 18, 10, 26, 17, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.06237828615518054, 0.9980525784828886, 0.0), 10, 30, 26, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 11, 12, 51, 3, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 12, 13, 14, 51, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 52, 51, 14, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(-0.0, 1.0, 0.0), 42, 52, 23, 27, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 16, 17, 26, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 1.0, 0.0), 26, 23, 52, 15, gba_shell_frontal_color, gba_shell_frontal_shading),
        face_3d(gba_vertices, vertex_3d(0.0, 0.0, -1.0), 2, 1, 54, 55, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.9964283048969312, 0.0, -0.08444307668618062), 0, 4, 57, 53, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.8, -0.0, 0.6), 4, 5, 58, 57, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.31622776601683794, -0.0, 0.9486832980505138), 5, 6, 59, 58, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(0.0847998304005088, -0.0, 0.9963980072059784), 6, 7, 60, 59, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.0847998304005088, 0.0, 0.9963980072059784), 7, 8, 61, 60, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.31622776601683794, 0.0, 0.9486832980505138), 9, 62, 61, 8, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.8, 0.0, 0.6), 10, 63, 62, 9, gba_shell_side_color, gba_shell_side_shading),
        face_3d(gba_vertices, vertex_3d(-0.988788000202999, -0.12359850002537487, -0.08379559323754228), 10, 3, 56, 63, gba_shell_side_color, gba_shell_side_shading),
    };

    constexpr inline model_3d_item gba_start_held(gba_vertices, gba_start_held_faces);
}

#endif

